


/**枚举常量工厂基类 */
export class EnumFactory{


    /**获取枚举的EnumStruct<any>[] 数组集合
     *
     * @param enumFunction 通常指EnumFactory.class中的枚举get方法
     * @param excludeCodes 想要排除掉的code集合:number[] | code1,code2这样的枚举代码字符串 不想排除不用传递此参数
     *
     * @description 使用示例排除掉code为-1的项：EnumFactory.getEnumItemArr(EnumFactory.EnableDisable,[-1])
     *
     */
    static getEnumItemArr<T>(enumObj:E_ENUM,excludeCodes?:number[] | string):EnumStruct<T>[]{
        let excludeCodeArr:any[]
        if(typeof excludeCodes=="string"){
            excludeCodeArr=excludeCodes.split(",").map(c=>parseInt(c))
        }else{
            excludeCodeArr=excludeCodes as number[]
        }
        const rsArr:EnumStruct<T>[]=[]
        //使用对象方式迭代
        for(const key in enumObj){
            const v=enumObj[key] as EnumStruct<T>
            if(excludeCodes==null || !excludeCodeArr.includes(v.code)){
                rsArr.push(v)
            }
        }
        //console.log("解析枚举的Arr:",rsArr)
        return rsArr
    }

}


